package desmontec.documentos

import grails.test.*
import desmontec.documentos.DPG
import desmontec.funcionarios.Engenheiro
class DPGControllerUnitTests extends ControllerUnitTestCase {
	
	def dpg = new DPG()
	
    protected void setUp() {
        super.setUp()
		mockForConstraintsTests(DPG, [ dpg ])
    }

    protected void tearDown() {
        super.tearDown()
    }

    //Teste de parametros que nao podem ser null 
	void testeParametrosNull() {
		
		def nullableDpg = new DPG(numero:123, beneficiario:"teste", responsavel:null,inicioDoPrazoValidade:null, fimDoPrazoValidade:null )
		
		assertFalse(nullableDpg.validate())
		
		assertEquals "nullable", nullableDpg.errors["responsavel"]
		assertEquals "nullable", nullableDpg.errors["inicioDoPrazoValidade"]
		assertEquals "nullable", nullableDpg.errors["fimDoPrazoValidade"]
	}
	
	void testeNomeBeneficiario() {
		def engenheiro = new Engenheiro(nome: "Goku", numeroCREA: "8000")
		def dataInicio = new Date()
		def dataFim = new Date()
		
		def dpgAux = new DPG(numero:123, beneficiario:"maisde80caracteresmaisde80caracteresmaisde80caracteresmaisde80caracteresmaisde80caracteresmaisde80caracteresmaisde80caracteresmaisde80caracteresmaisde80caracteresmaisde80caracteresmaisde80caracteres"
			, responsavel:engenheiro,inicioDoPrazoValidade:dataInicio, fimDoPrazoValidade:dataFim )
		
		assertFalse(dpgAux.validate())
		
		assertEquals "size",dpgAux.errors["beneficiario"]
	}
	
	void testeNumeroDuplicado(){
		
		def dpg1 = new DPG(numero:1234, beneficiario:"gohan", responsavel:null,inicioDoPrazoValidade:null, fimDoPrazoValidade:null )	
		mockForConstraintsTests(DPG, [ dpg1 ])
		
		def engenheiro = new Engenheiro(nome: "Goku", numeroCREA: "8000")
		def dataInicio = new Date()
		def dataFim = new Date()
		
		def dpg2 = new DPG(numero:1234, beneficiario:"trunks", responsavel:engenheiro,inicioDoPrazoValidade:dataInicio, fimDoPrazoValidade:dataFim )
		
		assertFalse(dpg2.validate())
		
		assertEquals "unique", dpg2.errors["numero"]
	}
	
	void testeData(){
		
	}
}
